package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.wxexpress;

import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.wxexpress.wxExpressCreate.CargoDTO;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@Data
public class ExpressCreateReqVO {

    @Schema(description = "订单ID，须保证全局唯一，不超过512字节", example = "o1234567890")
    @NotEmpty(message = "订单ID 不能为空")
    @JsonProperty("order_id")
    private String orderId;

    @Schema(description = "用户openid，当add_source=2时无需填写（不发送物流服务通知）", example = "oABC123456")
    @JsonProperty("openid")
    private String openid;

    @Schema(description = "快递公司ID", example = "SF")
    @NotEmpty(message = "快递公司ID 不能为空")
    @JsonProperty("delivery_id")
    private String deliveryId;

    @Schema(description = "快递客户编码或者现付编码 填写月结卡号?还是?", example = "1234567890")
    @NotEmpty(message = "快递客户编码或者现付编码 不能为空")
    @JsonProperty("biz_id")
    private String bizId;

    @Schema(description = "快递备注信息，比如\"易碎物品\"，不超过1024字节", example = "易碎物品")
    private String customRemark;

    @Schema(description = "订单标签id，用于平台型小程序区分平台上的入驻方，tagid须与入驻方账号一一对应，非平台型小程序无需填写该字段", example = "123123")
    private Integer tagid;

    @Schema(description = "订单来源，0为小程序订单，2为App或H5订单，填2则不发送物流服务通知 ", example = "0")
    private Integer addSource;

    @Schema(description = "App或H5的appid，add_source=2时必填，需和开通了物流助手的小程序绑定同一open账号", example = "a123456789")
    private String wxAppid;

    @Schema(description = "包裹信息，将传递给快递公司")
    private CargoDTO cargo;

    @Schema(description = "Unix 时间戳, 单位秒，顺丰必须传。 预期的上门揽件时间，0表示已事先约定取件时间；否则请传预期揽件时间戳，需大于当前时间，收件员会在预期时间附近上门。例如expect_time为“1557989929”，表示希望收件员将在2019年05月16日14:58:49-15:58:49内上门取货。说明：若选择 了预期揽件时间，请不要自己打单，由上门揽件的时候打印。如果是下顺丰散单，则必传此字段，否则不会有收件员上门揽件。", example = "1557989929")
    private Integer expectTime;

    @Schema(description = "分单策略，【0：线下网点签约，1：总部签约结算】，不传默认线下网点签约。目前支持圆通。", example = "")
    private Integer takeMode;
}
